As is well known, networks such as the Internet and local area networks (LANs) have recently become popular. Across these networks, servers perform various processes requested by user terminals.
Specifically, web servers intended to provide services across networks permit user terminals to sequentially display web pages to navigate the steps for a service, receive requests made on the web pages, and perform processes requested by users. As an example, a server for Internet banking permits a user terminal to display a log-in page, and asks the user to enter a log-in ID and a password. After the entry of the log-in ID and the password, the server permits the user terminal to display a menu page, receives an item on the menu page selected by the user, and advances to a web page corresponding to the selected item, for example, “money transfer”. When the user enters the account number of the destination and the amount to be transferred, the server permits the user terminal to display a transfer confirmation page. Then, when the server receives the user's confirmation of the transfer, the server performs the designated process, i.e., a money transfer process.
A server, which performs this process sequence or a so-called session, often employs a method of using an object for each user in order to process user requests. The object is used by the server to collectively manage data related to a session, i.e., user data, such as the log-in ID of a user, that is registered in advance, the contents of a process request, the process results, log data, such as process history, and the data that is generated during a session and is required for the following processes. An object is generated when a user performs the first session on the server, and at the second and following sessions, the same object is used, so that a continuous service can be provided based on the preceding sessions.
The server includes, as data storage units, a memory device that constitutes the main storage and one or more hard disk drives that constitute the auxiliary storage, and the objects for individual users are appropriately sorted and stored either in the main storage or on the auxiliary storage. Based on the log-in ID that is entered by the user, the server retrieves, from the main storage or the auxiliary storage, an object corresponding to the user, and performs requested processes. Naturally, the response is slower when an object is stored on the auxiliary storage, that is, on a hard disk drive, because of the time that is necessary for retrieval.
Since the memory capacity of the server is physically limited, the number of objects that can be stored in the main storage is accordingly limited. Therefore, when an object is to be retrieved from an auxiliary storage and loaded into the main storage, or when a new object is to be generated in the main storage, if there is not enough free space in the main storage, some of the objects currently stored in the main storage are moved to the auxiliary storage to provide additional free memory space, and the object retrieved from the auxiliary storage is stored therein. This movement of objects from the main storage to an auxiliary storage is called swap-out. While the retrieval of objects, from an auxiliary storage into free space in the main storage, is called swap-in.
Conventionally, the LRU (Least Recently Used) method is often employed for the management of objects in the main storage. According to the LRU method, the objects are swapped out of the main storage beginning with the object for which the time of its preceding use (the last time used) is the oldest.
For example, FIG. 15A is a diagram showing the array of objects (J1 to J8) stored in the main storage at a specific time, beginning at the left with the object for which the last use time is the latest. Upon receiving a process request from a user, the corresponding object (J5) is used, the last use time for the object (J5) is updated, and the position of the object (J5) in the array is changed, as is shown in FIG. 15B. That is, since the object (J5) was recently used for the process and its last use time is the latest, it comes first in the array (left end in FIG. 15B). Further, when swapping out of objects is to be performed because free memory space is insufficient for the generation of a new object (not shown) or the retrieval of an object from an auxiliary storage, as is shown in FIG. 15C, of the objects (J1) to (J8) currently stored in the main storage, the object (J8), for which the last use time is the oldest is swapped out, and moved out of the main storage to the auxiliary storage.
Another method for managing objects in the main storage is a method whereby the access frequency history is employed for selecting an object to be swapped out (e.g., Japanese Unexamined Patent Publication No. Hei 6-4316). According to this method, unlike the above method whereby the object for which the last use time is the oldest is swapped out, an object for which the access frequency (e.g., the total of in-use time) per unit time (e.g., the time that has elapsed since the object was swapped in) is the least is swapped out.